<?php 

class Giveaways extends CI_Controller {

	function __construct()
	{
		parent::__construct();
	}

	function index()
	{
		$data['results'] = "";

		if ($this->session->userdata('logged_in') !== FALSE)
		{
			$this->load->model('Mod_giveaways_pesquisa');
			$data['giveaways'] = $this->Mod_giveaways_pesquisa->pesquisaGiveaways();
			if($this->session->flashdata('response') != "")
			{
				$data['feedback'] = $this->session->flashdata('response');
			}
			else{}
		    $data['u_nome'] = $this->session->userdata('U_NOME');
		    $data['search'] = "";
		    $data['sample_check'] = [];
		    $this->load->view('index-user', $data);
		}
		else
		{ 
			$this->load->model('Mod_give');
			$data['results_give'] = $this->Mod_give->pesquisaGiveData();
			if($this->session->flashdata('response') != "")
			{
				$data['feedback'] = $this->session->flashdata('response');
			}
			else{}
			$this->load->view('index', $data);
		}
	}

	function logout()
	{
		$this->session->sess_destroy();
		redirect('giveaways', 'refresh');
	}

	function reg_or_log()
	{
		if(isset($_POST["loginbtn"])){
			$this->login();
		}

		if(isset($_POST["registarbtn"])){
			$this->registar();
		} 
	}

	function registar()
	{
		$data['username'] = "";
		$data['nome'] = "";
		$data['mail'] = "";
		$data['morada'] = "";
		$data['nacional'] = "";
		$data['telefone'] = "";

		$this->load->view('registar', $data);
	}

	function registarbtn()
	{
		$data['username'] = "";
		$data['nome'] = "";
		$data['mail'] = "";
		$data['morada'] = "";
		$data['nacional'] = "";
		$data['telefone'] = "";
		
		$this->form_validation->set_rules('user', 'Username', 'trim|xss_clean');
		$this->form_validation->set_rules('pass', 'Password', 'trim|xss_clean');
		$this->form_validation->set_rules('mail', 'E-Mail', 'trim|xss_clean');
		$this->form_validation->set_rules('nome', 'Nome', 'xss_clean');
		$this->form_validation->set_rules('morada', 'Morada', 'xss_clean');
		$this->form_validation->set_rules('nacional', 'Nacionalidade', 'xss_clean');
		$this->form_validation->set_rules('telefone', 'Telefone', 'xss_clean');

		if($this->form_validation->run() == FALSE)
		{
			$this->load->view('registar');
		}
		else
		{
			$this->load->model('mod_registar');

			extract($_POST);

			$result = $this->mod_registar->inserir_user($user, $pass, $nome, $mail, $morada, $nacional, $telefone);


			if($result)
			{
				$response = "Registo efectuado com sucesso. Por favor efectue o login.";
				$this->session->set_flashdata('response', $response);
				redirect('/giveaways/');
			}
			else
			{
				$data['feedback'] = "E-mail ou username já em uso.";
				$data['username'] = $user;
				$data['nome'] = $nome;
				$data['mail'] = $mail;
				$data['morada'] = $morada;
				$data['nacional'] = $nacional;
				$data['telefone'] = $telefone;

				$this->load->view('registar', $data);
			}
		}
	}

	function incrementaEntradas()
	{
		$id = $this->input->post("id");
		$id_user = $this->session->userdata('U_ID');
		$this->load->model('Mod_entradas');

		$novo_valor = $this->Mod_entradas->inserir_entrada($id, $id_user);

		echo($novo_valor);
	}

	function pesquisaEntradas()
	{
		$id = $this->input->post("id");

		$this->load->model('Mod_entradas');
		$novo_valor = $this->Mod_entradas->pesquisa_entrada($id);
		
		echo($novo_valor);
	}

	function login()
	{
		$this->form_validation->set_rules('mail', 'E-Mail', 'required|trim|xss_clean');
		$this->form_validation->set_rules('pass', 'Password', 'required|trim|xss_clean');

		if($this->form_validation->run() == FALSE)
		{
			$this->load->view('index');
		}
		else
		{
			extract($_POST);

			$data['results'] = $this->Mod_user->check_login($mail, $pass);

			if(!$data['results'])
			{
				$this->session->set_flashdata('login_error', TRUE);
				$data['feedback'] = "Dados Incorrectos. Tente Novamente.";
				$this->load->model('Mod_give');
				$data['results_give'] = $this->Mod_give->pesquisaGiveData();				
				$this->load->view('index', $data);
			}
			else
			{
				foreach($data['results'] as $row)
				{
					$sess_array = array('logged_in' => TRUE, 'U_ID' => $row->U_ID, 'U_NOME' => $row->U_NOME, 'U_EMAIL' => $row->U_EMAIL, 'U_USERNAME' => $row->U_USERNAME, 
						'U_PASS' => $row->U_PASS, 'U_MORADA' => $row->U_MORADA, 'U_TELEFONE' => $row->U_TELEFONE, 'U_NACIONALIDADE' => $row->U_NACIONALIDADE, 'U_TIPO' => $row->U_TIPO);

					$this->session->set_userdata($sess_array);
				}	

				

				foreach($data['results'] as $item)
				{
					//print_r($item);
					$u_tipo = $item->U_TIPO;

					if($u_tipo == 1)
						print_r("Admin");
					else
					{	
						$data['u_nome'] = $this->session->userdata('U_NOME');
						redirect('/giveaways/');
					}
				}		    		
				
			}
		}
	}

	function pesquisa()
	{
		$search = $this->input->post("search");
		$sample_check = $this->input->post("sample_check");

		$resultado['search'] = $search;

		$this->load->model('Mod_pesquisa');
		$resultado['giveaways'] = $this->Mod_pesquisa->pesquisa($search, $sample_check);
		$resultado['u_nome'] = $this->session->userdata('U_NOME');

		if(!empty($resultado['u_nome']))
		{
			if(!empty($sample_check))
			{
				$resultado['sample_check'] = $sample_check;
				$this->load->view('index-user', $resultado);
			}
			else
				$this->load->view('index-user', $resultado);
		}
		else
		{
			if(!empty($sample_check))
			{
				$resultado['sample_check'] = $sample_check;
				$this->load->view('index-pesquisa', $resultado);
			}
			else
				$this->load->view('index-pesquisa', $resultado);
		}
	}

	function pesquisa_index_pesquisa()
	{
		$search = $this->input->post("search");
		$resultado['search'] = $search;
		
		$this->load->model('Mod_pesquisa');
		$resultado['giveaways'] = $this->Mod_pesquisa->index_pesquisa($search);

		$this->load->view('index-pesquisa', $resultado);
	}

	function criar_giveaway()
	{
		$data['titulo'] = "";
		$data['datepicker'] = "";
		$data['datepicker2'] = "";
		$data['descricao'] = "";
		$data['n_copias'] = "";
		$data['tipo'] = "";
		$data['imagem'] = ""; 

		$data['u_nome'] = $this->session->userdata('U_NOME');
		$this->load->view('registar_giveaway', $data);
	}

	function registarbtn_giveaway()
	{
		$data['titulo'] = "";
		$data['datepicker'] = "";
		$data['datepicker2'] = "";
		$data['descricao'] = "";
		$data['n_copias'] = "";
		$data['tipo'] = "";
		$data['imagem'] = "";

		$this->form_validation->set_rules('titulo', 'Título', 'xss_clean');
		$this->form_validation->set_rules('datepicker', 'Data Início', 'xss_clean');
		$this->form_validation->set_rules('datepicker2', 'Dta Fim', 'xss_clean');
		$this->form_validation->set_rules('descricao', 'Descrição', 'xss_clean');
		$this->form_validation->set_rules('n_copias', 'Nº Cópias', 'xss_clean');
		$this->form_validation->set_rules('tipo', 'Tipo', 'xss_clean');
		$this->form_validation->set_rules('imagem', 'Imagem', 'trim|xss_clean');

		if($this->form_validation->run() == FALSE)
		{
			$this->load->view('registar_giveaway');
		}
		else
		{
			$this->load->model('mod_registar');

			$titulo = $this->input->post("titulo");
			$datepicker = $this->input->post("datepicker") . ":00";
			$datepicker2 = $this->input->post("datepicker2");
			$descricao = $this->input->post("descricao");
			$n_copias = $this->input->post("n_copias");
			$tipo = $this->input->post("tipo");

			if($this->input->post('registarbtn_giveaway'))
			{
			    $config['upload_path']   =   "imagens/";
		        $config['allowed_types'] =   "gif|jpg|jpeg|png"; 
		        $config['overwrite'] =   TRUE;
		        $config['max_size']      =   "2000";
		        $config['max_width']  = '1024';
				$config['max_height']  = '768';
		 
		        $this->load->library('upload',$config);
		 
		        if(!$this->upload->do_upload())
		        {
		            echo $this->upload->display_errors();
		        }
		        else
		        {
			        $upload_data = $this->upload->data(); 
	  				$imagem = $upload_data['file_name'];
		        }           
			}

			$autor = $this->session->userdata('U_USERNAME');

			$result = $this->mod_registar->inserir_giveaway($titulo, $autor, $datepicker, $datepicker2, $descricao, $n_copias, $tipo, $imagem);


			if($result)
			{
				$response = "Giveaway criado com sucesso.";	
				$this->session->set_flashdata('response', $response);			
				redirect('/giveaways/');
			}
			else
			{
				$data['feedback'] = "Giveaway já existente.";
				$data['titulo'] = $titulo;
				$data['datepicker'] = $datepicker;
				$data['datepicker2'] = $datepicker2;
				$data['descricao'] = $descricao;
				$data['n_copias'] = $n_copias;
				$data['tipo'] = $tipo;
				$data['imagem'] = $imagem;

				$this->load->view('registar_giveaway', $data);
			}
		}
	}

	function verifica_user_entradas()
	{
		$id_user = $this->session->userdata('U_ID');
		$this->load->model('Mod_entradas');

		$result['entradas_user'] = $this->Mod_entradas->pesquisa_entrada_user($id_user);

		echo(json_encode($result));
	}

	function winner()
	{
		$id = $this->input->post("id");
		$this->load->model('Mod_winner');

		$result = $this->Mod_winner->winner($id);

		echo $result;
	}

	function pesquisaGiveawaysUser()
	{
		$n_criados = 0;
		$username = $this->session->userdata('U_USERNAME');
		$id_user = $this->session->userdata('U_ID');
		$data['u_nome'] = $this->session->userdata('U_NOME');

		$this->load->model('Mod_giveaways_pesquisa');
		$data['lista'] = $this->Mod_giveaways_pesquisa->pesquisaGiveawaysUser($username);

		$this->load->model('Mod_giveaways_pesquisa');
		$data['n_inscritos'] = $this->Mod_giveaways_pesquisa->n_inscritos($id_user);

		$this->load->model('Mod_giveaways_pesquisa');
		$data['n_ganhos'] = $this->Mod_giveaways_pesquisa->n_ganhos($id_user);

		$data['n_criados'] = count($data['lista']);

		if($this->session->flashdata('response') != "")
		{
			$data['feedback'] = $this->session->flashdata('response');
		}
		else{}

		$this->load->view('opcoes_giveaways', $data);
	}

	function editar_giveaway()
	{

		if($this->uri->segment(3))
		{
			$g_id = $this->uri->segment(3);
			$this->load->model('Mod_editar_giveaway');
			$data['giveaway'] = $this->Mod_editar_giveaway->pesquisa_give($g_id);

			foreach ($data['giveaway'] as $value) {
				$data['tipo'] = $value->G_TIPO;
				$data['titulo'] = $value->G_TITULO;
				$data['datepicker'] = $value->G_DATA_I;
				$data['datepicker2'] = $value->G_DATA_F;
				$data['descricao'] = $value->G_DESCRICAO;
				$data['n_copias'] = $value->G_N_COPIAS;
				$data['imagem'] = $value->G_IMAGEM;
				$data['g_id'] = $this->uri->segment(3);
			}
			$data['u_nome'] = $this->session->userdata('U_NOME');

			$this->load->view('editar_giveaway', $data);
		}
		else{}
	}

	function editarbtn_giveaway()
	{
		$data['titulo'] = "";
		$data['datepicker'] = "";
		$data['datepicker2'] = "";
		$data['descricao'] = "";
		$data['n_copias'] = "";
		$data['tipo'] = "";
		$data['imagem'] = "";

		$this->form_validation->set_rules('titulo', 'Título', 'xss_clean');
		$this->form_validation->set_rules('datepicker', 'Data Início', 'xss_clean');
		$this->form_validation->set_rules('datepicker2', 'Dta Fim', 'xss_clean');
		$this->form_validation->set_rules('descricao', 'Descrição', 'xss_clean');
		$this->form_validation->set_rules('n_copias', 'Nº Cópias', 'xss_clean');
		$this->form_validation->set_rules('tipo', 'Tipo', 'xss_clean');
		$this->form_validation->set_rules('imagem', 'Imagem', 'trim|xss_clean');

		if($this->form_validation->run() == FALSE)
		{
			$this->load->view('editar_giveaway');
		}
		else
		{
			$this->load->model('mod_registar');

			$titulo = $this->input->post("titulo");
			$datepicker = $this->input->post("datepicker") . ":00";
			$datepicker2 = $this->input->post("datepicker2");
			$descricao = $this->input->post("descricao");
			$n_copias = $this->input->post("n_copias");
			$tipo = $this->input->post("tipo");

			if($this->input->post('editarbtn_giveaway'))
			{
			    $config['upload_path']   =   "imagens/";
		        $config['allowed_types'] =   "gif|jpg|jpeg|png"; 
		        $config['overwrite'] =   TRUE;
		        $config['max_size']      =   "2000";
		        $config['max_width']  = '1024';
				$config['max_height']  = '768';
		 
		        $this->load->library('upload',$config);
		 
		        if(!$this->upload->do_upload())
		        {
		            echo $this->upload->display_errors();
		        }
		        else
		        {
			        $upload_data = $this->upload->data(); 
	  				$imagem = $upload_data['file_name'];
		        }           
			}

			$autor = $this->session->userdata('U_USERNAME');
			$g_id = $this->uri->segment(3);

			$result = $this->mod_registar->editar_giveaway($titulo, $autor, $datepicker, $datepicker2, $descricao, $n_copias, $tipo, $imagem, $g_id);


			if($result)
			{
				$response = "Giveaway editado com sucesso.";	
				$this->session->set_flashdata('response', $response);			
				redirect('/giveaways/');
			}
			else
			{
				$data['feedback'] = "Ocorreu um erro, tente novamente.";
				$data['titulo'] = $titulo;
				$data['datepicker'] = $datepicker;
				$data['datepicker2'] = $datepicker2;
				$data['descricao'] = $descricao;
				$data['n_copias'] = $n_copias;
				$data['tipo'] = $tipo;
				$data['imagem'] = $imagem;

				$this->load->view('editar_giveaway', $data);
			}
		}
	}

	function eliminar_giveaway()
	{
		if($this->uri->segment(3))
		{
			$g_id = $this->uri->segment(3);
			$this->load->model('Mod_eliminar_giveaway');
			$result = $this->Mod_eliminar_giveaway->eliminar_give($g_id);

			if($result)
			{
				$response = "Giveaway eliminado com sucesso.";	
				$this->session->set_flashdata('response', $response);			
				redirect('/giveaways/pesquisaGiveawaysUser');
			}
			else
			{
				$data['feedback'] = "Ocorreu um erro, tente novamente.";

				$this->load->view('editar_giveaway', $data);
			}
		}
		else{}
		
	}

	function editar_user()
	{
		$data['u_nome'] = $this->session->userdata('U_NOME');
		$data['u_username'] = $this->session->userdata('U_USERNAME');
		$data['u_email'] = $this->session->userdata('U_EMAIL');
		$data['u_morada'] = $this->session->userdata('U_MORADA');
		$data['u_email'] = $this->session->userdata('U_EMAIL');
		$data['u_nacionalidade'] = $this->session->userdata('U_NACIONALIDADE');
		$data['u_telefone'] = $this->session->userdata('U_TELEFONE');

		$this->load->view('editar_user', $data);
	}

	function editarbtn()
	{
		$data['u_username'] = "";
		$data['u_nome'] = "";
		$data['u_email'] = "";
		$data['u_morada'] = "";
		$data['u_nacionalidade'] = "";
		$data['u_telefone'] = "";
		
		$this->form_validation->set_rules('user', 'Username', 'trim|xss_clean');
		$this->form_validation->set_rules('pass', 'Password', 'trim|xss_clean');
		$this->form_validation->set_rules('mail', 'E-Mail', 'trim|xss_clean');
		$this->form_validation->set_rules('nome', 'Nome', 'xss_clean');
		$this->form_validation->set_rules('morada', 'Morada', 'xss_clean');
		$this->form_validation->set_rules('nacional', 'Nacionalidade', 'xss_clean');
		$this->form_validation->set_rules('telefone', 'Telefone', 'xss_clean');

		if($this->form_validation->run() == FALSE)
		{
			$this->load->view('editar_user');
		}
		else
		{
			$this->load->model('mod_editar_user');

			extract($_POST);
			$id = $this->session->userdata('U_ID');

			$result = $this->mod_editar_user->editar_user($user, $pass, $nome, $mail, $morada, $nacional, $telefone, $id);


			if($result)
			{
				$response = "Perfil editado com sucesso.";	
				$this->session->set_flashdata('response', $response);				
				redirect('/giveaways/');
			}
			else
			{
				$data['feedback'] = "Ocorreu um erro, tente novamente.";
				$data['u_username'] = $user;
				$data['u_nome'] = $nome;
				$data['u_email'] = $mail;
				$data['u_morada'] = $morada;
				$data['u_nacionalidade'] = $nacional;
				$data['u_telefone'] = $telefone;

				$this->load->view('editar_user', $data);
			}
		}
	}

}